#include <iostream>
using namespace std;
#include <vector>

//version 1  利用比特位出现次数规律来做
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        //确定每一个二进制位
        int ans = 0;
        //求单独出现的数的二进制补码序列 逆序
        int i = 0;
        while(i < 32){
            int OneNum = 0;
            for(int x : nums)
                if((x >> i) % 2) ++OneNum;
            OneNum %= 3;
            ans |= (OneNum << i); 
            ++i;
        }        
        return ans;
    }
};